<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<script>
description("Tests the RTCPeerConnection stats selector argument.");

var pc = null;
var result;

function getUserMedia(dictionary, callback) {
    try {
        navigator.webkitGetUserMedia(dictionary, callback, error);
    } catch (e) {
        testFailed('webkitGetUserMedia threw exception :' + e);
        finishJSTest();
    }
}

function error() {
    testFailed('Stream generation failed.');
    finishJSTest();
}

function gotStream(s) {
    testPassed('Got a stream.');
    stream = s;

    pc.addStream(stream);
    shouldNotThrow('pc.getStats(statsHandler2, pc.getLocalStreams()[0].getVideoTracks()[0])');
}

function statsHandler2(status)
{
    testPassed("statsHandler2 was called");
    result = status.result();
    shouldBeGreaterThanOrEqual('result.length', '1');
    // Windows XP sometimes gives time that appears to go backwards.
    // This hack will make the tests non-flaky if it never goes backwards
    // by more than 20 milliseconds.
    // Up to 10 milliseconds has been observed on XP, 2 milliseconds on Win7.
    fudgeForXP = 20;
    res = result[0];
    timediff = res.timestamp - startTime + fudgeForXP;
    shouldBeGreaterThanOrEqual('timediff', '0');
    // TODO(hta): Get the right stat object for checking the type.
    // shouldBe('res.stat("type")', '"video"');
    finishJSTest();
}

var startTime = new Date().getTime();
shouldNotThrow('pc = new RTCPeerConnection()');
shouldNotThrow('getUserMedia({audio:true, video:true}, gotStream)');

window.jsTestIsAsync = true;
window.successfullyParsed = true;
</script>
</body>
</html>
